# 导包
import requests
from dbutil import DBUtil

# 创建测试类（模块）
class TestStaffAPI:
    # 初始化
    token666 = None
    id666 = None

    # 类前置处理
    def setup_class(self):
        # 登录成功
        url = "http://ihrm-test.itheima.net/api/sys/login"
        login_data = {
            "mobile": "13800000002",
            "password": "123456"
        }
        self.response = requests.post(url=url, json=login_data)
        print(self.response.json())

        # 提取登录成功之后的data数据并保存到类的属性中
        TestStaffAPI.token666 = self.response.json().get("data")
        print(TestStaffAPI.token666)

        DBUtil().exe_sql("delete from bs_user where mobile = '13603901902'")

    # 类后置处理
    def teardown_class(self):
        pass

    # 前置处理
    def setup(self):
        pass

    # 后置处理
    def teardown(self):
        pass

    # 测试方法（测试用例）
    # 添加员工成功
    def test01_insert_staff(self):
        url = "http://ihrm-test.itheima.net/api/sys/user"
        # 手机号必须唯一
        insert_data = {
            "username": "jack666",
            "mobile": "13603901902",
            "workNumber": "1008603011001"
        }
        response = requests.post(url=url, json=insert_data, headers={"Authorization": TestStaffAPI.token666})
        print(response.json())
        # 断言响应状态码
        assert response.status_code == 200
        # 断言json返回数据中的success
        assert response.json().get("success") is True
        # 断言json返回数据中的code
        assert response.json().get("code") == 10000
        # 断言返回消息中包含指定的内容message
        assert "成功" in response.text

        # 提取员工id并保存类的属性
        TestStaffAPI.id666 = response.json().get("data").get("id")
        print(TestStaffAPI.id666)

    # 查询员工(已存在)
    def test02_select_staff(self):
        url = f"http://ihrm-test.itheima.net/api/sys/user/{TestStaffAPI.id666}"
        response = requests.get(url=url,headers={"Authorization":TestStaffAPI.token666})
        print(response.json())

        assert response.status_code == 200
        # 断言json返回数据中的success
        assert response.json().get("success") is True
        # 断言json返回数据中的code
        assert response.json().get("code") == 10000
        # 断言返回消息中包含指定的内容message
        assert "成功" in response.text
    # 修改员工（已存在、修改用户名）
    def test03_update_staff(self):
        url = f"http://ihrm-test.itheima.net/api/sys/user/{TestStaffAPI.id666}"
        aa={
            "username":"sjl"
        }
        response = requests.put(url=url, headers={"Authorization": TestStaffAPI.token666},json=aa)
        print(response.json())
        assert response.status_code == 200
        # 断言json返回数据中的success
        assert response.json().get("success") is True
        # 断言json返回数据中的code
        assert response.json().get("code") == 10000
        # 断言返回消息中包含指定的内容message
        assert "成功" in response.text
    # 删除员工（已存在）
    def test04_delete_staff(self):
        url = f"http://ihrm-test.itheima.net/api/sys/user/{TestStaffAPI.id666}"
        response = requests.delete(url=url, headers={"Authorization": TestStaffAPI.token666})
        print(response.json())

        assert response.status_code == 200
        # 断言json返回数据中的success
        assert response.json().get("success") is True
        # 断言json返回数据中的code
        assert response.json().get("code") == 10000
        # 断言返回消息中包含指定的内容message
        assert "成功" in response.text